# 1. 列表（list）
list_var = [1, "apple", 3.14, True]
print("\n列表(list):", list_var, "类型:", type(list_var))

# 2. 元组（tuple）
tuple_var = (10, 20, "tuple")
print("\n元组(tuple):", tuple_var, "类型:", type(tuple_var))

# 3. 字典（dict）
dict_var = {"name": "Alice", "age": 25, "is_student": False}
print("\n字典(dict):", dict_var, "类型:", type(dict_var))

# 4. 集合（set）
set_var = {1, 2, 3, 3, 4}  # 自动去重
print("\n集合(set):", set_var, "类型:", type(set_var))

# 5. 冻结集合（frozenset）
frozenset_var = frozenset([5, 6, 7])
print("\n冻结集合(frozenset):", frozenset_var, "类型:", type(frozenset_var))

#例子如下
# 列表：有序、可变，适合存储同类可修改的序列
classmates = ["张三", "李四", "王五"]  # 初始名单

# 使用方式：添加/删除元素
classmates.append("赵六")  # 新增学生
classmates.remove("李四")  # 移除学生
classmates[0] = "张三丰"  # 修改第一个学生姓名

print("班级名单：", classmates)  # 输出：['张三丰', '王五', '赵六']
print("第二个学生：", classmates[1])  # 索引访问（下标从0开始）

# 元组：有序、不可变，适合存储固定搭配的数据
location = (39.9042, 116.4074)  # 北京经纬度（纬度，经度）
rgb_color = (255, 0, 0)  # 红色的RGB值（不可修改）

# 使用方式：只能访问，不能修改
print("纬度：", location[0])  # 39.9042
print("红色分量：", rgb_color[0])  # 255

# 尝试修改会报错：tuple' object does not support item assignment
# rgb_color[0] = 200  # 错误！

# 字典：键值对集合，适合存储有明确属性的数据
student_info = {
    "name": "张三",
    "age": 18,
    "scores": {"math": 95, "english": 88},  # 嵌套字典
    "hobbies": ["篮球", "编程"]  # 嵌套列表
}

# 使用方式：通过键访问/修改值
print("姓名：", student_info["name"])  # 张三
student_info["age"] = 19  # 修改年龄
print("修改后的年龄：", student_info["age"])  # 19
print("数学成绩：", student_info["scores"]["math"])  # 95（访问嵌套值）

# 集合：无重复、无序，适合去重和成员判断
scores = {95, 88, 95, 76}  # 自动去重
print("去重后的成绩：", scores)  # {76, 88, 95}

# 判断是否包含某个成绩
print(95 in scores)  # True（95是存在的）
print(100 in scores)  # False（100不存在）

# 冻结集合：不可变的集合，适合作为字典的键或固定集合
tags = frozenset(["Python", "编程", "学习"])
# 可作为字典的键（普通set不能作为字典键，因为可变）
tag_counts = {tags: 10}  # 统计该标签组合出现的次数
print(tag_counts)  # {frozenset({'学习', 'Python', '编程'}): 10}